The present invention is related to memory architectures and, more particularly, to architectures for compression of memory in embedded systems.
Compression techniques are well-known. A recent development has been to use compression techniques to reduce the size of main memory in a computer architecture. See, e.g., M. Kjelso et al., “Main Memory Hardware Data Compression,” 22nd Euromicro Conference, pages 423-30, IEEE Computer Society Press (September 1996). For example, researchers at IBM have developed the “MXT” architecture for servers which performs compression and decompression during runtime of an application when transferring data from the L3 cache to main memory and vice versa. See Tremaine et al., “IBM Memory Expansion Technolog (MXT),” IBM J. Res. & Dev., Vol. 45, No. 2 (March 2001). See also U.S. Pat. Nos. 5,761,536, 5,812,817, and 6,240,419, which are incorporated by reference herein.
Current trends in embedded systems design require complex functionality while keeping hardware size small. As devices such as cellular phones and digital cameras get smaller and smaller, memory compression techniques can enable an embedded system designer to pack more functionality in less space. Previous work on embedded memory compression has, in general, focused on compressing the instruction segment of executable code before execution and decompression at runtime. See, e.g., L. Benini et al., “Selective Instruction Compression for Memory Energy Reduction in Embedded Systems,” IEEE/ACM Proc. of International Symposium on Lower Power Electronics and Design (ISLPED '99), pages 206-11 (1999). Unfortunately, the inventors have recognized that solely compressing the instruction segment often does not produce sufficient memory savings to warrant the use of the additional compression hardware.
Thus, solutions currently available either do not handle code and data at the same time—or do not provide a workable solution in the embedded systems arena. Accordingly, there is a need for a unified architecture for embedded systems that can handle the compression of both code and data in a flexible and efficient manner.